\documentclass{article}

\begin{document}

\section{Iteration 1 - Building sets}

\subsection{Objective}

To get a graphical concept set builder working.

\subsection{Motivation}

Implementing a concept set builder first exposes the following risks:

\begin{enumerate}
\item Getting Java skills up to scratch, including Swing.
\item Proof of concept of the conceptual design.
\item Being able to demonstrate the basic concepts and get feedback.
\end{enumerate}

This iteration will NOT integrate with the DGB, i.e. there will be no query execution. Queries will be validated manually and with unit testss.

\subsection{Features}

\begin{enumerate}
\item Set up basic application GUI with menus.
\item Add model document that contains prototypes and manages query nodes.
\item Add template concept types.
\item Add rendering of query nodes.
\item Add selection manager.
\item Add action validation framework
\item Add attribute filter on concept prototypes.
\item Add boolean operations on selected sets.
\item Inspector showing the dgbQL string for selected nodes
\item Undo/Redo framwork
\end{enumerate}

\section{Iteration 2 - Add actual basic usage}

\subsection{Objective}

To implement features that will enable usage as a basic set query builder with connectivity to the DGB.

\subsection{Features}

\begin{enumarate}
\item Add loading and saving 
\item Add connecting to a dgb instance
\item Add submitting queries to the DGB
\item Add dislaying result of queries
\end{enumarate}

\section{Feature store}

\begin{itemize}
\item Add layer, concept and relation types to canvas
\item Add a filter to a entity type.
\item Add multiple filters to an entity type. (This would be an intersection of different filters, does the query language support multiple filters)
\item Move entities around the canvas
\item Execute queries and store the result.
\item Peek into large results
\item Get instance count for atomic entities.
\item Rename queries (i.e. name a result set) for re-use.
\item Expand/Collapse layers to see the arcetypes that reside in the layer (expand for concept, layer, rleaiton or all)
\item Add concept-relation archetypes to the canvas from selected entities. Specify the depth of archetypes to add.
\item Adaptive graph layout. E.g. when two entities are selected and a boolean performed, the layout must be adaptively redone.
\item Highlight selected entities.
\item A query can be executed at any point. I.e. during construction of an advanced query, the user must be able to determine how many entity instances exist, and also possibly examine those instances in order for the query to be narrowed down.
\item A method to specify results. Some ideas: 
  \begin{enumerate}
  \item Specifying the result set and choosing ``Query''. The system would automatically follow unspecified paths to start a bottom-up query.
  \item Specifying each set to query first, the expanding the search via the arcs. E.g. in the gene example, first choosewhich sets to detemine, then the set of relation instances, then the set of human genes. In this way, all the arcs that are connected to already determined sets are used, and the ones that are undetermined are not used.
  \item Specifying which sets/graphs are inputs and which ones are outputs. 
  \end{enumerate}
\item Fading/blurring shows context. (Omnigraffe edit sub entity within group)
\item Culstering of entities in graph layouts to group entities in layers and types (E.g all concept instances must be clustered in a surrounding type, or all the types that are in a layer)
\item Shadow and/or halo for selected entities.
\item When a query is received, all equal queries are updated, not only the one that was executed.
e\end{itemize}
\item Expand/Collapse a result (e.g. a graph) into a type + instance count representation


\end{document}



